// 样例的代码过于冗余  进项相关优化
// 对样例进行优化
#include <stdio.h>
void menu()
{
    printf("****************************\n");
    printf("******1. add  2. sub *******\n");
    printf("******3. mul  4. div *******\n");
    printf("******0. exit  *************\n");
}

int Add(int x, int y)
{
    return x + y;
}
int Sub(int x, int y)
{
    return x - y;
}
int Mul(int x, int y)
{
    return x * y;
}
int Div(int x, int y)
{
    return x / y;
}

// 定义一个新函数 实现对计算函数的调用 来完成计算
// 利用函数指针实现对不同的 但功能 相 配合
// 利用回调函数实现   解决代码冗余
// 回调函数需要和函数指针结合
int main()
{
    int input = 0;
    int x = 0;
    int y = 0;
    int res = 0;
    int (*pf_arr[5])(int, int) = {0, Add, Sub, Mul, Div};

    do
    {
        menu();
        printf("chose\n");
        scanf("%d", &input);
        if (input == 0)
        {
            printf("exit\n");
        }
        else if (input >= 1 && input <= 4)
        {
            printf("please input two nums\n");
            scanf("%d %d", &x, &y);
            res = pf_arr[input](x, y);
            printf("%d\n", res);
        }
        else
        {
            printf("error\n");
        }
    } while (input);
    return 0;
}